package com.insight.dto.event;

import com.insight.common.enums.MetadataChangeEventType;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.time.LocalDateTime;
import java.util.Map;

/**
 * 元数据变更事件DTO
 * 用于Kafka消息传输的事件数据结构
 *
 * @author Insight Team
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class MetadataChangeEvent {

    /**
     * 事件类型
     */
    private MetadataChangeEventType eventType;

    /**
     * 数据源ID
     */
    private Long datasourceId;

    /**
     * 表ID (可选,如TABLE_REMOVED时可能为null)
     */
    private Long tableId;

    /**
     * 表名
     */
    private String tableName;

    /**
     * 事件发生时间
     */
    private LocalDateTime timestamp;

    /**
     * 附加元数据 (用于存储特定事件类型的额外信息)
     * 例如: taskId, errorMessage, tablesCollected等
     */
    private Map<String, String> metadata;
}
